/**
 *  CMS文件处理工具类
 *  调用方式：fileUploadUtil.方法名
 */
var fileUploadUtil = {
    /**
     *  文件上传
     *  ============================================================================================
     *  入参：
     *      option          【需要btn_id，ul_id，max_file_count参数】
     *                              btn_id          【上传按钮元素ID】
     *                              ul_id           【回显图片缩略图的ul元素ID】
     *                              max_file_count  【最大文件数限制】
     *  ============================================================================================
     */
    uploadInit: function (option) {
        var config = {
            runtimes: 'html5,flash,html4',//上传模式,依次退化
            uptoken_url: '/cms/fileToken',//Ajax请求upToken的Url，**强烈建议设置**（服务端提供）
            unique_names: true,// 默认false，key为文件名。若开启该选项，SDK为自动生成上传成功后的key（文件名）
            domain: login_user_infos.user_sys_def.qiniuBaseUrl,//bucket 域名，下载资源时用到，**必需**
            get_new_uptoken: true,//设置上传文件的时候是否每次都重新获取新的token
            flash_swf_url: '/piger/support/plugins/plupload-2.3.6/js/Moxie.swf',//引入flash,相对路径
            max_retries: 10,//上传失败最大重试次数
            chunk_size: '5mb',//分块上传时，每片的体积
            auto_start: true,//选择文件后自动上传，若关闭需要自己绑定事件触发上传
            multi_selection: (option.max_file_count > 1) ? true : false,//是否允许多选
            disable_statistics_report: true,//关闭七牛在浏览器console的错误输出日志
            filters:{
                max_file_size: '10mb',//最大文件体积限制
                prevent_duplicates: true//不允许选取重复文件
            },
            init: {
                Error: function(uploader, error) {
                    // 上传出错时，处理相关的事情
                    switch (error.code) {
                        case -600:
                            layer.msg('文件【'+error.file.name+'】大小为'+(error.file.origSize/1024/1024).toFixed(2)+'MB，已经超过最大限制10MB！', {anim: 6,time: 6000});
                            break;
                        case -602:
                            layer.msg('文件【'+error.file.name+'】已存在，系统不允许选择重复文件！', {anim: 6,time: 6000});
                            break;
                        default:
                            layer.msg(error.message, {anim: 6});
                            break;
                    }
                }
            }
        }
        config.browse_button = option.btn_id;//上传选择的点选按钮，**必需**
        config.init.FilesAdded = function(uploader, files) {
            var file_count = $('#'+option.ul_id)[0].children.length;
            if ((files.length+file_count) > option.max_file_count) {
                var temp_files = JSON.parse(JSON.stringify(files));
                $.each(temp_files, function (file_index, file_item) {
                    if ((file_count+file_index+1) > option.max_file_count) {
                        uploader.removeFile(file_item);
                    }
                });
                layer.msg('当前已上传'+file_count+'个文件，系统最多允许上传'+option.max_file_count+'个文件，还剩'+(option.max_file_count-file_count)+'个可以上传！', {anim: 6,time: 6000});
            }

        }
        config.init.FileUploaded = function (uploader, file, responseObject) {
            var domain = uploader.getOption('domain');
            var response = $.parseJSON(responseObject.response);
            var source_url = domain+response.key;
            var pics = new Array();
            pics.push(source_url);
            fileUploadUtil.initFileBox(option.ul_id, pics, false, ((option.max_file_count > 1) ? false : true), uploader, file);
        }
        Qiniu.uploader(config);
    },
    /**
     *  初始化(上传时使用)
     *  ============================================================================================
     *  入参：
     *      ul_id           【回显图片缩略图的ul元素ID】
     *      pics            【图片链接地址的数组】
     *      isView          【是否查看模式，true表示查看模式，false表示传图模式】
     *      isSingle        【是否单图上传，true表示单图上传，false表示多图上传】
     *      uploader        【Plupload实例，非必须，可传空或null】
     *      file            【上传的文件实例，非必须，可传空或null】
     *  ============================================================================================
     */
    initFileBox: function (ul_id, pics, isView, isSingle, uploader, file) {
        if (isSingle) {
            $('#'+ul_id).empty();
        }
        var fileType = '/piger/support/img/file.jpg';
        if (file.type.indexOf('doc') != -1 || file.type.indexOf('word') != -1) {
            fileType = '/piger/support/img/word.jpg';
        }
        if (file.type.indexOf('sheet') != -1 || file.type.indexOf('excel') != -1) {
            fileType = '/piger/support/img/excel.jpg';
        }
        if (file.type.indexOf('pdf') != -1) {
            fileType = '/piger/support/img/pdf.jpg';
        }
        if (file.type.indexOf('image') != -1) {
            fileType = null;
        }
        $.each(pics, function (pics_index, pics_item) {
            var index = $('#'+ul_id)[0].children.length-1;
            $('#'+ul_id).append(
                '<li id="'+ul_id+'-li-'+index+'" class="cms-picBox-li">' +
                '<img class="cms-picBox-img" style="width: 110px;height: 110px;" src="'+(fileType ? fileType : pics_item)+'" data-href="'+pics_item+'">' +
                (!isView ? '<i id="'+ul_id+'-i-'+index+'" class="cms-picBox-li-remove"></i>' : '') +
                '</li>'
            );
            $('#'+ul_id+'-i-'+index).click(function () {
                $('#'+ul_id+'-li-'+index).remove();
                if (uploader && file) {
                    uploader.removeFile(file);
                }
            });
        });
    },
    /**
     *  初始化(显示时使用)
     *  ============================================================================================
     *  入参：
     *      ul_id           【回显图片缩略图的ul元素ID】
     *      pics            【图片链接地址的数组】
     *      isSingle        【是否单图上传，true表示单图上传，false表示多图上传】
     *      download        【是否允许图片下载】
     *  ============================================================================================
     */
    fileBox: function (ul_id, pics, isSingle, download) {
        if (isSingle) {
            $('#'+ul_id).empty();
        }

        $.each(pics, function (pics_index, pics_item) {
            var index = $('#'+ul_id)[0].children.length-1;

            var imageHref = pics_item;
            if (pics_item.indexOf('.docx') != -1 || pics_item.indexOf('.doc') != -1) {
                imageHref = '/piger/support/img/word.jpg';
            }
            if (pics_item.indexOf('.xls') != -1 || pics_item.indexOf('excel') != -1) {
                imageHref = '/piger/support/img/excel.jpg';
            }
            if (pics_item.indexOf('.pdf') != -1) {
                imageHref = '/piger/support/img/pdf.jpg';
            }
            if (pics_item.indexOf('.txt') != -1) {
                imageHref = '/piger/support/img/file.jpg';
            }

            var href = '<a href="'+pics_item+'" class="cms-picBox-img" target="_blank"><img class="cms-picBox-img" src="' + imageHref + '"></a>';
            if (!download) {
                href = '<img class="cms-picBox-img" src="' + pics_item + '">';
            }
            var append = '<li id="' + ul_id + '-li-' + index + '" class="cms-picBox-li">' + href +'</li>';
            $('#'+ul_id).append(append);
        });
    }
}